package com.luoshizhen.lease.common.minio;

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(MinioProperties.class)
@ConditionalOnProperty(name = "minio.endpoint")
public class MinioConfiguration {

    @Autowired
    private MinioProperties properties;

    /**
     * 配置并创建MinioClient实例
     *
     * 该方法使用Spring的@Bean注解来定义一个bean，确保MinioClient实例在应用程序启动时被创建并注入到Spring应用上下文中
     * 它使用MinioClient的构建器模式来设置Minio服务器的端点、访问密钥和秘密密钥，这些都是与Minio服务器建立连接所必需的
     *
     * @return MinioClient实例，用于与Minio服务器进行通信
     */
    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                .endpoint(properties.getEndpoint()) // 设置Minio服务器的端点
                .credentials(properties.getAccessKey(), properties.getSecretKey()) // 设置访问密钥和秘密密钥
                .build(); // 构建并返回MinioClient实例
    }
}
